/**
 * 保存本地文件
 */
var recorder;
// 已经保存的文件
var SAVEFILES = {}, saveFiles_key = 'SAVEFILES';
var USER_PATH = '';
var recordingId = null;
function initSaveFile() {
    SAVEFILES = api.getPrefs({key: saveFiles_key, sync: true});
    if(SAVEFILES) {
        SAVEFILES = JSON.parse(SAVEFILES);
    }else {
        SAVEFILES = {};
    }
    var custId = USER.Get('custId');
    USER_PATH = 'record'+custId;
    if(SAVEFILES[USER_PATH]) {
        // 已经初始化过了
    }else {
        SAVEFILES[USER_PATH] = {};
    }
}

/**
 * [getIsSave 录音文件是否保存]
 * @Author ljliu    2020-02-09T17:50:34
 * @param  {string} id              需要录音的ID
 * @return {是否保存}                未保存：null 以保存：本地路径
 */
function getIsSave(id) {
    var localPath = SAVEFILES[USER_PATH][id];
    var localData = JSON.stringify(SAVEFILES);
    console.log(id + '读取录音文件:=====>'+localData);
    if(localPath) {
        return localPath;
    }
    return null;
}

/**
 * [saveFileById 保存录音文件]
 * @Author ljliu    
 * @param  {[type]} id        [文件ID]
 * @param  {[type]} path      [文件路径]
 */
function saveFileById(id, path) {
    var userFolder = SAVEFILES[USER_PATH];
    userFolder[id] = path+'';
    var localData = JSON.stringify(SAVEFILES);
    console.log('保存录音文件:=====>'+localData);
    api.setPrefs({
        key: saveFiles_key,
        value: localData,
    });
}

function clearFileById() {
    api.setPrefs({
        key: saveFiles_key,
        value: '',
    });
}

function createFile(id, callback) {
    console.log('createFile========='+id);
    if(recordingId) {
        stopRecord();
        return;
    }
    recordingId = id + '';
    recorder = api.require('mp3Recorder');
    var resultList = api.hasPermission({
        list: ['microphone']
    });
    if(resultList[0]['granted']+'' != 'false') {
        api.showProgress({
            style: 'default',
            animationType: 'fade',
            title: '录音启动中...',
            modal: true
        });
        recorder.addEventListener(function(ret, err){
            // console.error('recorder.addEventListener==='+JSON.stringify(ret));
            if(ret.status && ret.evenType == 'endRecord') {
                // 录音结束
                recordingId = null;
                console.error(JSON.stringify(ret)+'=============')
                var path = ret.data.path;
                path = 'fs:/' + path.split(api.appId)[1]
                console.log('mp3Path======'+path);
                callback(path);
            }
        });
        recorder.startRecord({
            channel: 2,//声道支持:1 单声道 2 立体声道
            sampleRates : 44100,//采样率
        },function(ret, err){
            api.hideProgress();
            if(!ret.status) {
                console.error('打开录音失败>>>>'+ JSON.stringify(err));
                fnToast('打开录音失败');
                recordingId = null;
                callback();
            }
        });
        // recorder.startRecord({
        //     savePath: 'fs://audioRecorder/audio'+recordingId+'.pcm',
        //     format: 'pcm'
        // }, function(ret, err) {
        //     api.hideProgress();
        //     if(err) {
        //         console.error('打开录音失败>>>>'+ JSON.stringify(err));
        //         fnToast('打开录音失败');
        //         recordingId = null;
        //         callback();
        //     }
        // });
    }else {
        api.requestPermission({
            list: ['microphone']
        },function(ret) {
            if(ret && ret.list) {
                var cancle = []
                for(var i = 0; i < ret.list.length; i ++) {
                    if(!ret.list[i]['granted']) {
                        cancle.push(ret.list[i]['name']);
                    }
                }
                if(cancle.length >0) {
                    fnToast('您没有允许录音权限，请允许后继续');
                    recordingId = null;
                    callback()
                }else {
                    recorder.addEventListener(function(ret, err){
                        if(ret.status && ret.evenType == 'endRecord') {
                            // 录音结束
                            recordingId = null;
                            var path = ret.data.path;
                            path = path.replace('/storage/emulated/0/UZMap/A6013175406332', 'fs:/');
                            console.log('mp3Path======'+path);
                            callback(path);
                        }
                    });
                    recorder.startRecord({
                        channel: 2,//声道支持:1 单声道 2 立体声道
                        sampleRates : 44100,//采样率
                    },function(ret, err){
                        if(!ret.status) {
                            console.error('打开录音失败>>>>'+ JSON.stringify(err));
                            fnToast('打开录音失败');
                            recordingId = null;
                            callback();
                        }
                    });
                }
            }
        })
    }
}


function stopRecord(callback) {
    console.log('stopRecord========='+recordingId);
    recorder.stopRecord(function(ret, err) {
        console.error(JSON.stringify(ret)+'====='+JSON.stringify(err));
    });
}
